原始题目:剑指 Offer 27. 二叉树的镜像 (opens new window)
解题思路:
要求一棵树的镜像,其实就是将树的的左右子节点交换一下,类似于交换数组中两个位置的元素。
递归函数
终止条件:当 为 时,返回 ;
递推工作:
- 使用 变量保存 。
- 把 .left 指向 右节点 的递归结果 。
- 把 指向原先保存的 左子树 的递归结果 。
- 返回 root。
代码:
public TreeNode mirrorTree(TreeNode root) {
    if(root == null) {
        return null;
    }
    TreeNode tmp = root.left;
    root.left = mirrorTree(root.right);
    root.right = mirrorTree(tmp);
    return root;
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
复杂度分析
- 时间复杂度 :其中 为树的节点数量,交换工作需要遍历所有节点。 
- 空间复杂度:最差情况下,树退化成链表,递归栈的占用 大小。 
